// add_roles.js
// 一个简单的脚本，用于直接添加角色字段和权限字段到用户表
// 不创建外键约束，避免"Too many keys"错误

require('dotenv').config();
const { sequelize } = require('../utils/database');

async function addRoleColumns() {
  console.log('开始添加用户角色字段...');
  
  try {
    // 测试数据库连接
    await sequelize.authenticate();
    console.log('数据库连接成功');
    
    // 1. 创建role类型并添加role字段
    console.log('添加role字段...');
    await sequelize.query(`
      ALTER TABLE users 
      ADD COLUMN role ENUM('user', 'moderator', 'admin', 'superadmin') 
      NOT NULL DEFAULT 'user';
    `).catch(err => {
      if (err.parent && err.parent.code === 'ER_DUP_FIELDNAME') {
        console.log('role字段已存在，跳过添加');
      } else {
        throw err;
      }
    });
    
    // 2. 添加permissions字段
    console.log('添加permissions字段...');
    await sequelize.query(`
      ALTER TABLE users 
      ADD COLUMN permissions JSON NULL;
    `).catch(err => {
      if (err.parent && err.parent.code === 'ER_DUP_FIELDNAME') {
        console.log('permissions字段已存在，跳过添加');
      } else {
        throw err;
      }
    });
    
    // 3. 将admin用户设置为管理员角色
    console.log('更新admin用户角色...');
    await sequelize.query(`
      UPDATE users 
      SET role = 'admin' 
      WHERE username = 'admin';
    `);
    
    console.log('✅ 用户角色字段添加完成!');
    
  } catch (error) {
    console.error('添加用户角色字段失败:', error);
  } finally {
    // 关闭数据库连接
    await sequelize.close();
  }
}

// 如果直接运行此脚本，则执行添加操作
if (require.main === module) {
  addRoleColumns();
}

module.exports = addRoleColumns; 